KAFKA-20620: Add StreamsGroupTopologyDescriptionUpdate RPC schema and extend StreamsGroupDescribe/Heartbeat#22397
Draft
aliehsaeedii wants to merge 4 commits into
Draft
KAFKA-20620: Add StreamsGroupTopologyDescriptionUpdate RPC schema and extend StreamsGroupDescribe/Heartbeat#22397aliehsaeedii wants to merge 4 commits into
aliehsaeedii wants to merge 4 commits into
Conversation
…msGroupDescribe/Heartbeat
Align nested struct names in StreamsGroupTopologyDescriptionUpdateRequest with StreamsGroupDescribeResponse (TopologyDescriptionSubtopology / TopologyDescriptionNode / TopologyDescriptionGlobalStore) so the broker can pass the same generated type through both RPCs without a converter. Keeping the prefixed form rather than the simple Subtopology name avoids colliding with the existing v0 inline Subtopology struct used by the already-shipped Topology field. Also populate ErrorMessage in getErrorResponse so the response field defined by the schema is set on error, and exercise the nested topology struct in the RequestResponseTest round-trip with a realistic source/processor/sink subtopology plus a global store. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lucasbru
reviewed
May 28, 2026
| { "name": "IncludeAuthorizedOperations", "type": "bool", "versions": "0+", | ||
| "about": "Whether to include authorized operations." } | ||
| "about": "Whether to include authorized operations." }, | ||
| { "name": "IncludeTopologyDescription", "type": "bool", "versions": "0+", |
Member
There was a problem hiding this comment.
The KIP states that we use a request version bump instead of a tagged field
- Bump StreamsGroupHeartbeat request and response to v1 so the new TopologyDescriptionRequired field is actually negotiated. - Mark StreamsGroupTopologyDescriptionUpdate as latestVersionUnstable until the broker handler lands; exclude from RequestQuotaTest via a new UnimplementedApis set. - Fix StreamsGroupDescribeRequest.getErrorResponse to set TopologyDescriptionStatus=ERROR when the client requested topology; previously defaulted to NOT_REQUESTED, contradicting KIP-1331. - Switch the Update RPC getErrorResponse to ApiError.fromThrowable so cause messages survive while UNKNOWN_SERVER_ERROR is sanitized. - Reword "plugin" out of client-visible strings (Errors.java default message, JSON about fields). - Add lifecycle Javadoc to the new Request class (drops duplicated error code list) and error-code Javadoc to the new Response class; document the TopologyDescription/Status biconditional invariant and the errorCounts() vs Status=ERROR caveat on DescribeResponse. - Add "Supported errors" comment block to the new UpdateResponse JSON. - Strengthen tests: nullable SinkTopic round-trip, TopologyDescription null/NOT_STORED coverage, explicit assertion on DeleteGroups v3 per-group ErrorMessage. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First sub-task of KIP-1331 (Streams Group Topology Description Plugin). Adds the wire-format scaffolding only — no broker handler or client logic yet (those land in later tickets).
StreamsGroupTopologyDescriptionUpdate(apiKey 93) — request/response schemas + Java wrappers, wired throughApiKeys,AbstractRequest,AbstractResponse,RequestConvertToJson.GROUP_DELETION_FAILED(134),STREAMS_TOPOLOGY_DESCRIPTION_UPDATE_FAILED(135), with matching exception classes.StreamsGroupHeartbeatResponse: taggedTopologyDescriptionRequired.StreamsGroupDescribeRequest: taggedIncludeTopologyDescription.StreamsGroupDescribeResponse: taggedTopologyDescription+TopologyDescriptionStatus.DeleteGroups{Request,Response}bumped to v3 with per-groupErrorMessage.